import java.awt.BorderLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.ComboBoxModel;
import javax.swing.DefaultComboBoxModel;
import javax.swing.JButton;
import javax.swing.JComboBox;
import javax.swing.JLabel;
import javax.swing.JOptionPane;

import javax.swing.JPanel;
import javax.swing.JTextField;

import javax.swing.WindowConstants;
import javax.swing.border.LineBorder;
import javax.swing.SwingUtilities;



/**
* This code was edited or generated using CloudGarden's Jigloo
* SWT/Swing GUI Builder, which is free for non-commercial
* use. If Jigloo is being used commercially (ie, by a corporation,
* company or business for any purpose whatever) then you
* should purchase a license for each developer using Jigloo.
* Please visit www.cloudgarden.com for details.
* Use of Jigloo implies acceptance of these licensing terms.
* A COMMERCIAL LICENSE HAS NOT BEEN PURCHASED FOR
* THIS MACHINE, SO JIGLOO OR THIS CODE CANNOT BE USED
* LEGALLY FOR ANY CORPORATE OR COMMERCIAL PURPOSE.
*/
public class VentanaPrincipal extends javax.swing.JFrame {
	
	// Arreglos de objetos String que seran constantes
	private static final String[] TIPOS_PERSONAS = {"Profesor", "Estudiante"};
	
	private JPanel panContenedor;
	private JLabel lblTituloDatos;
	private JLabel lblDatos;
	private JButton btnImprimir;
	private JTextField txtNota3;
	private JLabel lblNota3;
	private JTextField txtNota2;
	private JLabel lblNota2;
	private JTextField txtNota1;
	private JLabel lblNota1;
	private JPanel panNotas;
	private JTextField txtAsignatura;
	private JTextField txtNombre;
	private JLabel lblAsignatura;
	private JComboBox cmbTipo;
	private JLabel lblTipo;
	private JTextField txtApellido;
	private JLabel lblApellido;
	private JLabel lblNombre;
	private JTextField txtCedula;
	private JLabel lblCedula;
	private JLabel lblTitulo;

	/**
	* Auto-generated main method to display this JFrame
	*/
	public static void main(String[] args) {
		SwingUtilities.invokeLater(new Runnable() {
			public void run() {
				VentanaPrincipal inst = new VentanaPrincipal();
				inst.setLocationRelativeTo(null);
				inst.setVisible(true);
			}
		});
	}
	
	public VentanaPrincipal() {
		super();
		initGUI();
	}
	
	private void initGUI() {
		try {
			// Le indicamos que finalice la aplicacion cuando se haga click
			// en la X (Cerrar) de la Ventana
			setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE);
			// El Layout del JFrame sera de tipo BorderLayout
			getContentPane().setLayout(new BorderLayout());
			{
				// Instanciamos un panel que sera el contenedor de los componentes del formulario
				panContenedor = new JPanel();
				// Agregamos el panel al JFrame
				getContentPane().add(panContenedor);
				// Indicamos el tamaño y posicion del panel 
				panContenedor.setBounds(12, 12, 366, 241);
				//Le colocamos al panel el color de fondo blanco
				panContenedor.setBackground(new java.awt.Color(255,255,255));
				//Indicamos que el panel no tendra Layout
				panContenedor.setLayout(null);
				panContenedor.setPreferredSize(new java.awt.Dimension(544, 346));
				{
					// Instanciamos una etiqueta
					lblTitulo = new JLabel();
					// Agregamos la etiqueta al JPanel					
					panContenedor.add(lblTitulo);
					// Asignamos el valor al texto de la etiqueta
					lblTitulo.setText("Datos del Profesor/Estudiante");
					// Indicamos el tamaño y posicion de la etiqueta
					lblTitulo.setBounds(127, 12, 320, 16);
					// Indicamos el tipo y tamaño de letra de la etiqueta
					lblTitulo.setFont(new java.awt.Font("Dialog",1,16));
				}
				{
					lblCedula = new JLabel();
					panContenedor.add(lblCedula);
					lblCedula.setText("Cédula:");
					lblCedula.setBounds(145, 58, 80, 15);
				}
				{
					txtCedula = new JTextField();
					panContenedor.add(txtCedula);
					txtCedula.setBounds(237, 55, 100, 22);
				}
				{
					lblNombre = new JLabel();
					panContenedor.add(lblNombre);
					lblNombre.setText("Nombre:");
					lblNombre.setBounds(145, 94, 80, 15);
				}
				{
					txtNombre = new JTextField();
					panContenedor.add(txtNombre);
					txtNombre.setBounds(237, 91, 146, 22);
				}
				{
					lblApellido = new JLabel();
					panContenedor.add(lblApellido);
					lblApellido.setText("Apellido:");
					lblApellido.setBounds(145, 132, 80, 15);
				}
				{
					txtApellido = new JTextField();
					panContenedor.add(txtApellido);
					txtApellido.setBounds(237, 129, 146, 22);
				}
				{
					lblTipo = new JLabel();
					panContenedor.add(lblTipo);
					lblTipo.setText("Tipo:");
					lblTipo.setBounds(145, 174, 80, 15);
				}
				{
					cmbTipo = new JComboBox();
					panContenedor.add(cmbTipo);
					// Asignamos el valor de los items del JComboBox
					ComboBoxModel cmbTipoModel = 
						new DefaultComboBoxModel(TIPOS_PERSONAS);

					cmbTipo.setModel(cmbTipoModel);
					cmbTipo.setBounds(237, 170, 139, 22);
					cmbTipo.addActionListener(cmbTipoListener);
				}
				{
					lblAsignatura = new JLabel();
					panContenedor.add(lblAsignatura);
					lblAsignatura.setText("Asignatura:");
					lblAsignatura.setBounds(145, 212, 85 ,15);
				}
				{
					txtAsignatura = new JTextField();
					panContenedor.add(txtAsignatura);
					txtAsignatura.setBounds(237, 209, 144, 22);					
				}
				{
					panNotas = new JPanel();
					panContenedor.add(panNotas);
					panNotas.setBounds(138, 211, 286, 37);
					panNotas.setBackground(new java.awt.Color(255,255,255));
					panNotas.setBorder(new LineBorder(new java.awt.Color(0,0,0), 1, false));
					panNotas.setLayout(null);
					panNotas.setVisible(false);
					{
						lblNota1 = new JLabel();
						panNotas.add(lblNota1);
						lblNota1.setText("Nota 1:");
						lblNota1.setBounds(7, 10, 55, 15);
					}
					{
						txtNota1 = new JTextField();
						panNotas.add(txtNota1);
						txtNota1.setBounds(63, 7, 25, 22);
					}
					{
						lblNota2 = new JLabel();
						panNotas.add(lblNota2);
						lblNota2.setText("Nota 2:");
						lblNota2.setBounds(97, 10, 55, 15);
					}
					{
						txtNota2 = new JTextField();
						panNotas.add(txtNota2);
						txtNota2.setBounds(154, 7, 27, 22);
					}
					{
						lblNota3 = new JLabel();
						panNotas.add(lblNota3);
						lblNota3.setText("Nota 3:");
						lblNota3.setBounds(188, 10, 55, 15);
					}
					{
						txtNota3 = new JTextField();
						panNotas.add(txtNota3);
						txtNota3.setBounds(246, 7, 29, 22);
					}
				}
				{
					// Instanciamos un JButton
					btnImprimir = new JButton();
					// Agregamos el JButton al JPanel 
					panContenedor.add(btnImprimir);
					// Asignamos un valor al texto del JButton
					btnImprimir.setText("Imprimir Datos");
					// Indicamos el tamaño y posicion del JButton					
					btnImprimir.setBounds(180, 260, 174, 22);
					// Colocamos deshabiltado el JRadioButton
					btnImprimir.setEnabled(false);
					// Agregamos un Listener al JButton
					// encargado de estar pendiente de un evento
					// sobre el JRadioButton (Click)					
					btnImprimir.addActionListener(new ActionListener() {
						public void actionPerformed(ActionEvent evt) {
							//TODO add your code for btnImprimir.actionPerformed
							btnImprimirActionPerformed(evt);
						}
					});
				}
				{
					lblTituloDatos = new JLabel();
					panContenedor.add(lblTituloDatos);
					lblTituloDatos.setText("Los Datos introducidos son:");
					lblTituloDatos.setBounds(8, 298, 524, 15);
					lblTituloDatos.setFont(new java.awt.Font("Dialog",1,12));
				}
				{
					lblDatos = new JLabel();
					panContenedor.add(lblDatos);
					lblDatos.setBounds(8, 320, 544, 20);
				}

			}

			pack();
			this.setSize(562, 376);
		} catch (Exception e) {
		    //add your error handling code here
			e.printStackTrace();
		}
	}
	
	// Listener encargado de estar pendiente de algun evento
	// sobre el JComboBox llamado cmbTipo
	private ActionListener cmbTipoListener= new ActionListener() {
		public void actionPerformed(ActionEvent evt) {
			
			if (cmbTipo.getSelectedItem().toString().equals(TIPOS_PERSONAS[0])) {
				// Si esta seleccionado Profesor
				setVisibleDatoAsignatura(true);
				panNotas.setVisible(false);
			}
			else{
				// Si esta seleccionado Estudiante
				setVisibleDatoAsignatura(false);
				panNotas.setVisible(true);	
			}
			btnImprimir.setEnabled(true);
		}
	};
	
	private void btnImprimirActionPerformed(ActionEvent evt){
		try {	
			if (cmbTipo.getSelectedItem().toString().equals(TIPOS_PERSONAS[0])) {
				// Si esta seleccionado Profesor
				Profesor profesor = new Profesor(txtCedula.getText(),txtNombre.getText(),
						                         txtApellido.getText(),txtAsignatura.getText());
				lblDatos.setText(profesor.mostrarPorPantalla());
			}
			else{
				// Si esta seleccionado Estudiante
				Estudiante estudiante = new Estudiante(txtCedula.getText(),txtNombre.getText(),txtApellido.getText(),
                                        Integer.parseInt(txtNota1.getText()),Integer.parseInt(txtNota2.getText()),
                                        Integer.parseInt(txtNota3.getText()));
				lblDatos.setText(estudiante.mostrarPorPantalla());		
			}
		}
		catch(NumberFormatException e) {
			// Mensaje de Dialogo en caso de que ocurra una excepcion en la conversion de numeros
			JOptionPane.showMessageDialog(this, "Las notas del estudiante deben ser Números Enteros");
		}
		catch(Exception e) {
			// Mensaje de Dialogo en caso de que ocurra cualquier otra excepcion
			JOptionPane.showMessageDialog(this, e.toString());
		}
	}
	
	// Metodo para ocultar o mostrar el dato de entrada Asignatura
	private void setVisibleDatoAsignatura(boolean valor) {
		lblAsignatura.setVisible(valor);
		txtAsignatura.setVisible(valor);
	}
	
}
